home *** CD-ROM | disk | FTP | other *** search
- // npx.hpp - Non-Preemptive eXecutive Header
- // Copyright 1990 by Cnapse
- // Written by: M. de Champlain
-
- #include "std.h"
- #include "list.h"
-
- typedef word *reg;
- typedef enum { TERMINATED, READY, RUNNING, SUSPENDED } taskState;
-
- class Task {
- friend class StateQ;
- friend class ReadyQ;
- LINK n;
- reg sp;
- word *stackBase;
- taskState state;
- void (*taskStartingAddress)();
- word stackSizeInBytes;
- Task *self;
- Task *parent;
- void Schedule(void);
- public:
- Task(void (*task)(), word stackSize) { taskStartingAddress = task;
- stackSizeInBytes = stackSize; }
- Task *Start(void);
- Task *Self(void);
- Task *Parent(void);
- void ReSchedule(void);
- void Terminate(Task *id);
- void Suspend(Task *id);
- void Resume(Task *id);
- };
-
- extern Task *running;
-